home *** CD-ROM | disk | FTP | other *** search
- .TITLE SYS_SET_UIC
- ;
- .IDENT /X01-01/
- ;
- ; FACILITY: SYS - General procedure Library
- ;
- ; ABSTRACT: Rewrite current process's UIC
- ;
- ; ENVIRONMENT: User mode, calls kernel mode routine, requires
- ; user privelege CMKRNL
- ;
- ;
- ; AUTHOR: DSA , ABS STINE
- ; CREATION DATE: 09-SEP-83
- ;
- ;--
- ;++
- ;
- ; FUNCTIONAL DESCRIPTION:
- ;
- ; Sets process UIC to longword UIC passed from caller
- ;
- ; Note: Calling procedure must be linked with SYS$SYSTEM:SYS.STB
- ;
- ; CALLING SEQUENCE: (from high - level language)
- ;
- ; ret_status.wlc.v = SYS_SET_UIC ( new_uic.rl )
- ;
- ; FORMAL PARAMETERS:
- ;
- ; NEW_UIC The longword containing the new UIC
- ;
- ; IMPLICIT INPUTS:
- ;
- ; NONE
- ;
- ; IMPLICIT OUTPUTS:
- ;
- ; Process Control Block (PCB$L_UIC)
- ;
- ; COMPLETION STATUS:
- ;
- ; SS$_NORMAL Success
- ; SS$_NOPRIV You don't have CMKRNL priv
- ; <other> something returned from $CMKRNL
- ;
- ; SIDE EFFECTS:
- ;
- ; Process UIC is changed
- ;
- ;******************************************************************************
- ;
- ; WARNING ******: DO NOT CHANGE THE FORMAT OF THE ADDRESSING IN THIS ROUTINE.
- ; WARNING ALMOST NO ERROR CHECKING IS, OR CAN BE DONE. THERE IS NO
- ; WARNING REAL WAY OF HANDLING AN EXCEPTION WHILE IN KERNEL MODE,
- ; AND HAVE IT COME BACK TO USER MODE.
- ;
- ; **** IN OTHER WORDS, YOU GOOF IT, YOU LOOSE IT. *****
- ;
- ;******************************************************************************
- ;
- ; integer*4 newuic, SYS_SET_UIC, ERROR
- ; DATA NEWUIC/ 65540 / ! SAME UIC AS [ 1,4 ]
- ;
- ; ERROR = SYS_SET_UIC( NEWUIC )
- ;
- ;
- ;--
- ;
- .LIBRARY /SYS$LIBRARY:LIB.MLB/
- ;
- $SSDEF ; system return definitions
- $PCBDEF
- ;
- .PSECT _SYS_CODE, PIC, USR, CON, REL, LCL, SHR, EXE, RD, NOWRT
- ;
- .ENTRY SYS_SET_UIC,^M<R2,R3,R4,R5,R6,R7,R8,R9,R10,R11> ; save all reg
- ;
- MOVL @4(AP),R2 ; GRAB THE UIC AND STUFF INTO R2
- ;
- $CMKRNL_S ROUTIN=SETUIC ; call kernel routine
- 10$: RET
- ;
- .ENTRY SETUIC,0
- ; MOVL @#SMP$GL_CURPCB,R0 ; get current process PCB address
- GET_CURPCB R0
- MOVL R2 , PCB$L_UIC(R0) ; set user identification code
- MOVZWL #SS$_NORMAL,R0 ; SET A ONE IN R0 FOR NORMAL RETURN
- RET
- ;
- ;
- .END
-